home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / New System Software Extensions / OpenDoc A6 / OpenDoc Parts Framework / OPF / Found / FWStream / Include / FWASinks.h next >
Encoding:
C/C++ Source or Header  |  1994-04-21  |  2.9 KB  |  107 lines  |  [TEXT/MPS ]

  1. #ifndef FWASINKS_H
  2. #define FWASINKS_H
  3. //========================================================================================
  4. //
  5. //    File:                FWASinks.h
  6. //    Release Version:    $ 1.0d1 $
  7. //
  8. //    Creation Date:        3/28/94
  9. //
  10. //    Copyright:    © 1994 by Apple Computer, Inc., all rights reserved.
  11. //
  12. //========================================================================================
  13.  
  14. #ifndef FWEXCDEF_H
  15. #include "FWExcDef.h"
  16. #endif
  17.  
  18. //========================================================================================
  19. //    CLASS FW_CSink
  20. //========================================================================================
  21.  
  22. class FW_CSink : public _FW_CAutoDestructObject
  23. {
  24.  
  25. public:
  26.  
  27.     FW_CSink();
  28.     virtual ~FW_CSink();
  29.     
  30.     virtual long GetReadableBytes() const = 0;
  31.     virtual void Read(void * destination, long count) = 0;
  32.     virtual const void* ReadPeek(long& availableReadBytes) = 0;
  33.     virtual void ReadPeekAdvance(long bytesRead) = 0;
  34.     
  35.     virtual long GetWritableBytes() const = 0;
  36.     virtual void Write(const void* source, long count) = 0;
  37.     virtual void* WritePeek(long& availableWriteBytes) = 0;
  38.     virtual void WritePeekAdvance(long bytesWritten) = 0;
  39.     
  40. protected:
  41.     FW_CSink(const FW_CSink& sink);
  42.     FW_CSink& operator=(const FW_CSink& sink);
  43. };
  44.  
  45.  
  46. //========================================================================================
  47. //    FW_CRandomAccessSink
  48. //========================================================================================
  49.  
  50. class FW_CRandomAccessSink : public FW_CSink
  51. {
  52.  
  53. public:    
  54.  
  55.     FW_CRandomAccessSink();
  56.     virtual~ FW_CRandomAccessSink();
  57.  
  58.     virtual long GetReadableBytes() const;
  59.     
  60.     virtual long GetLength() const = 0;
  61.     virtual long GetPosition() const = 0;
  62.     virtual void SetPosition(long position) = 0;
  63.  
  64. protected:
  65.     FW_CRandomAccessSink(const FW_CRandomAccessSink& sink);
  66.     FW_CRandomAccessSink& operator=(const FW_CRandomAccessSink& sink);
  67. };
  68.  
  69.  
  70. //========================================================================================
  71. //    CLASS FW_CMemorySink
  72. //========================================================================================
  73.  
  74. class FW_CMemorySink : public FW_CRandomAccessSink
  75. {
  76.  
  77. public:
  78.  
  79.     FW_CMemorySink(void* buffer, long capacity, long initialPosition=0);
  80.     virtual ~FW_CMemorySink();
  81.     
  82.     virtual void Read(void * destination, long count);
  83.     virtual const void* ReadPeek(long& availableReadBytes);
  84.     virtual void ReadPeekAdvance(long bytesRead);
  85.     
  86.     virtual long GetWritableBytes() const;
  87.     virtual void Write(const void* source, long count);
  88.     virtual void* WritePeek(long& availableWriteBytes);
  89.     virtual void WritePeekAdvance(long bytesWritten);
  90.  
  91.     virtual long GetLength() const;
  92.     virtual long GetPosition() const;
  93.     virtual void SetPosition(long position);
  94.  
  95. private:
  96.  
  97.     char*    fBuffer;
  98.     long    fCapacity;
  99.     long    fPosition;
  100.     
  101.     FW_CMemorySink(const FW_CMemorySink& sink);
  102.     FW_CMemorySink& operator=(const FW_CMemorySink& sink);
  103.         // Shouldn't copy instances of this class.
  104. };
  105.  
  106. #endif
  107.